package com.snoob.springboot.bffServiceAuth.util;

import com.snoob.springboot.base.BaseException;
import com.snoob.springboot.enums.SysKeyEnum;
import com.snoob.springboot.pipleline.dto.UserLoginDtoReq;
import com.snoob.springboot.util.StrUtil;

/**
 * @描述：工具类
 * @作者：lixing_java@163.com
 * @时间：2022/8/6 21:56
 */
public class LoginUtil {
    /** @描述 校验登陆参数 */
    public static void checkLoginParam(UserLoginDtoReq dto) {
        // 非空校验
        if (null == dto) {
            throw new BaseException("参数缺失");
        }
        // 必填校验
        String client = dto.getLoginClient();
        if (!StrUtil.isEffective(client)) {
            throw new BaseException("登录客户端缺失");
        }

        String category = dto.getLoginCategory();
        if (!StrUtil.isEffective(category)) {
            throw new BaseException("登录用户类型缺失");
        }

        String loginType = dto.getLoginType();
        if (!StrUtil.isEffective(loginType)) {
            throw new BaseException("登录方式缺失");
        } else {
            if (SysKeyEnum.LOGIN_TYPE_COMMON.getKey().equals(loginType)) {
                // 账号和密码登录方式登陆
                String account = dto.getUserAccount();
                if (!StrUtil.isEffective(account)) {
                    throw new BaseException("账号缺失");
                }
                String userPassword = dto.getUserPassword();
                if (!StrUtil.isEffective(userPassword)) {
                    throw new BaseException("密码缺失");
                }
            } else if (SysKeyEnum.LOGIN_TYPE_SMS.getKey().equals(loginType)) {
                // 账号和验证码登录方式登陆
                String userPhone = dto.getUserPhone();
                if (!StrUtil.isEffective(userPhone)) {
                    throw new BaseException("手机号码缺失");
                }
                String smsCode = dto.getSmsCode();
                if (!StrUtil.isEffective(smsCode)) {
                    throw new BaseException("短信验证码失");
                }
            } else {
                throw new BaseException("登录方式缺失非法");
            }
        }

        String imgCode = dto.getImgCode();
        if (!StrUtil.isEffective(imgCode)) {
            throw new BaseException("图像验证码失");
        }
    }

    /** @描述 校验图像验证码 */
    public static void checkImgCode(UserLoginDtoReq dto) {

    }

    /**
     * @描述 校验短信验证码
     */
    public static void checkSmsCode(UserLoginDtoReq dto) {

    }

    /** 生成JWT令牌 */
    public static String getJwt() {
        // 用户基本信息
        // token版本号(区分重复登陆)
        // 登陆ip（防止token被盗用）
        // token存入redis
        return null;
    }
}
